﻿using Core.Entities.Mater;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infrastructure.Data.Configurations.Mater
{
    internal class MaterTypeConfiguration : IEntityTypeConfiguration<MaterType>
    {
        public void Configure(EntityTypeBuilder<MaterType> builder)
        {
            // 设置表名
            builder.ToTable("BS_MaterType");

            // 配置主键
            builder.HasKey(m => m.Id);

            // 属性配置
            builder.Property(m => m.Id)
                .HasColumnName("ID")
                .HasMaxLength(50);

            builder.Property(m => m.MT_Code)
                .HasColumnName("MT_Code")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(m => m.MT_Name)
                .HasColumnName("MT_Name")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(m => m.CreateTime)
                .HasColumnName("CreateTime")
                .HasColumnType("datetime2(7)")
                .IsRequired(false);

            builder.Property(m => m.CreateBy)
                .HasColumnName("CreateBy")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(m => m.UpdateTime)
                .HasColumnName("UpdateTime")
                .HasColumnType("datetime2(7)")
                .IsRequired(false);

            builder.Property(m => m.UpdateBy)
                .HasColumnName("UpdateBy")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(m => m.Remaker)
                .HasColumnName("Remaker")
                .HasMaxLength(500)
                .IsRequired(false);

            builder.Property(m => m.IsDeleted)
                .HasColumnName("IsDeleted");
                
            // 索引配置
            builder.HasIndex(m => m.MT_Code)
                .HasDatabaseName("IX_BS_MaterType_MT_Code");
        }
    }
}
